home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / modules / nessus-2.2.8.mo / usr / include / nessus / libnessus.h < prev    next >
C/C++ Source or Header  |  2006-06-13  |  17KB  |  573 lines

  1. /* Nessuslib -- the Nessus Library
  2.  * Copyright (C) 1998 Renaud Deraison
  3.  *
  4.  * This library is free software; you can redistribute it and/or
  5.  * modify it under the terms of the GNU Library General Public
  6.  * License as published by the Free Software Foundation; either
  7.  * version 2 of the License, or (at your option) any later version.
  8.  *
  9.  * This library is distributed in the hope that it will be useful,
  10.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  12.  * Library General Public License for more details.
  13.  *
  14.  * You should have received a copy of the GNU Library General Public
  15.  * License along with this library; if not, write to the Free
  16.  * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  17.  */   
  18.  
  19. #ifndef _NESSUS_NESSUSLIB_H
  20. #define _NESSUS_NESSUSLIB_H
  21.  
  22.  
  23. #ifndef ExtFunc
  24. #define ExtFunc
  25. #endif
  26.  
  27. ExtFunc void nessus_lib_version(int *, int *, int *);
  28.  
  29. /*
  30.  * Arglist definition and defines
  31.  */
  32.  
  33. struct arglist {
  34.     char * name;
  35.     int type;
  36.     void * value;
  37.     long length;
  38.     struct arglist * next;
  39.     int hash;
  40.     };
  41.  
  42.     
  43. #define ARG_STRING     1
  44. #define ARG_PTR     2
  45. #define ARG_INT     3
  46. #define ARG_ARGLIST     4
  47. #define ARG_STRUCT    5
  48.  
  49.  
  50. /*
  51.  * Plugin standard function templates
  52.  */
  53.  
  54. typedef int(*plugin_init_t)(struct arglist *);
  55. typedef int(*plugin_run_t)(struct arglist *);      
  56.  
  57.  
  58.  
  59.  
  60.  
  61. /*
  62.  * Network-related functions
  63.  */
  64.  
  65. /* Plugin specific network functions */
  66. ExtFunc int open_sock_tcp(struct arglist * , unsigned int, int );
  67. ExtFunc int open_sock_udp(struct arglist * , unsigned int );
  68. ExtFunc int open_sock_option(struct arglist * , unsigned int , int , int, int);
  69. ExtFunc int recv_line(int, char *, size_t);
  70. ExtFunc int nrecv(int, void*, int, int);
  71. ExtFunc int socket_close(int);
  72.  
  73. /* Additional functions -- should not be used by the plugins */
  74. ExtFunc int open_sock_tcp_hn(const char * , unsigned int );
  75. ExtFunc int open_sock_opt_hn(const char * , unsigned int , int , int, int );
  76. ExtFunc struct in_addr nn_resolve (const char *); 
  77.  
  78. #ifdef __GNUC__
  79. ExtFunc void auth_printf(struct arglist *, char * , ...) __attribute__ (( format (printf, 2, 3)));
  80. #else
  81. ExtFunc void auth_printf(struct arglist *, char * , ...);
  82. #endif
  83. ExtFunc void scanner_add_port(struct arglist*, int, char *);
  84. ExtFunc void auth_send(struct arglist *, char *);
  85. ExtFunc char * auth_gets(struct arglist *, char * , size_t);
  86. ExtFunc int ping_host(struct in_addr);
  87.  
  88. ExtFunc unsigned short *getpts(char *, int *);
  89.  
  90. /* 
  91.  * Management of the arglists --should not be used directly by
  92.  * the plugins
  93.  */
  94.  
  95. ExtFunc void arg_add_value(struct arglist *, const char *, int, long, void *);       
  96. ExtFunc int arg_set_value(struct arglist *, const char *, long, void *);    
  97. ExtFunc int arg_set_type(struct arglist *, const char *, int);
  98. ExtFunc void * arg_get_value(struct arglist *, const char *);
  99. ExtFunc int arg_get_type(struct arglist *, const char *);
  100. ExtFunc int arg_get_length(struct arglist *, const char *);
  101. ExtFunc void arg_dump(struct arglist *, int);
  102. ExtFunc void arg_dup(struct arglist *, struct arglist *);
  103. ExtFunc void arg_free(struct arglist *);
  104. ExtFunc void arg_free_all(struct arglist *);
  105. ExtFunc void arg_free_name(char*);
  106.  
  107.  
  108.  
  109. /*
  110.  * Arglist management at plugin-level
  111.  */
  112.  
  113. ExtFunc void plug_set_name(struct arglist *, const char *, const char *);
  114. ExtFunc char*plug_get_name(struct arglist*);
  115.  
  116. ExtFunc void plug_set_path(struct arglist *, const char *);
  117. ExtFunc char*plug_get_path(struct arglist *);
  118.  
  119. ExtFunc void plug_set_fname(struct arglist *, const char *);
  120. ExtFunc char*plug_get_fname(struct arglist *);
  121.  
  122.  
  123. ExtFunc void plug_set_version(struct arglist *, const char *);
  124. ExtFunc char*plug_get_version(struct arglist *);
  125.  
  126. ExtFunc void plug_set_timeout(struct arglist *, int);
  127. ExtFunc int  plug_get_timeout(struct arglist *);
  128.  
  129. ExtFunc void plug_set_launch(struct arglist *, int);
  130. ExtFunc int plug_get_launch(struct arglist *);
  131.  
  132. ExtFunc void plug_set_summary(struct arglist *, const char *, const char*);
  133. ExtFunc char*plug_get_summary(struct arglist *);
  134.  
  135. ExtFunc void plug_set_description(struct arglist *, const char *,const char *);
  136. ExtFunc char*plug_get_description(struct arglist *);
  137.  
  138. ExtFunc void plug_set_category(struct arglist *, int);
  139. ExtFunc int  plug_get_category(struct arglist *);
  140.  
  141. ExtFunc void plug_set_copyright(struct arglist *, const char *, const char*);
  142. ExtFunc char*plug_get_copyright(struct arglist *);
  143.  
  144. ExtFunc void plug_set_family(struct arglist * , const char *, const char *);
  145. ExtFunc char*plug_get_family(struct arglist *);
  146.  
  147. ExtFunc    void plug_set_dep(struct arglist *, const char *);
  148. ExtFunc struct arglist * plug_get_deps(struct arglist*);
  149.  
  150. ExtFunc void plug_set_id(struct arglist *, int);
  151. ExtFunc int  plug_get_id(struct arglist *);
  152.  
  153. ExtFunc void plug_set_cve_id(struct arglist *, char *);
  154. ExtFunc char*plug_get_cve_id(struct arglist *);
  155.  
  156. ExtFunc void plug_set_bugtraq_id(struct arglist *, char *);
  157. ExtFunc char*plug_get_bugtraq_id(struct arglist *);
  158.  
  159. ExtFunc void plug_set_xref(struct arglist *, char *, char *);
  160. ExtFunc char * plug_get_xref(struct arglist *);
  161.  
  162. ExtFunc void plug_set_see_also(struct arglist *, char *);
  163. ExtFunc struct arglist * plug_get_see_also(struct arglist *);
  164.  
  165. #ifdef HAVE_SSL
  166. ExtFunc void plug_set_ssl_cert(struct arglist*, char*);
  167. ExtFunc void plug_set_ssl_key(struct arglist*, char*);
  168. ExtFunc void plug_set_ssl_pem_password(struct arglist*, char*);
  169. ExtFunc int nessus_SSL_init(char*);
  170. ExtFunc void sslerror(char*);
  171. ExtFunc void nessus_install_passwd_cb(SSL_CTX*, char*);
  172.  
  173. #endif
  174.  
  175.  
  176.  
  177. ExtFunc void plug_add_dep(struct arglist *, char *, char *);
  178.  
  179. ExtFunc void plug_add_port(struct arglist *, int);
  180.  
  181. ExtFunc const char * plug_get_hostname(struct arglist *);
  182. ExtFunc const char * plug_get_host_fqdn(struct arglist *);
  183. ExtFunc unsigned int plug_get_host_open_port(struct arglist * desc);
  184. ExtFunc void plug_add_host(struct arglist *, struct arglist *);
  185.  
  186. ExtFunc char* plug_get_cve_id(struct arglist*);
  187. ExtFunc char* plug_get_bugtraq_id(struct arglist*);
  188.  
  189. ExtFunc void plug_require_key(struct arglist *, const char *);
  190. ExtFunc struct arglist * plug_get_required_keys(struct arglist *);
  191.  
  192. ExtFunc void plug_exclude_key(struct arglist *, const char *);
  193. ExtFunc struct arglist * plug_get_excluded_keys(struct arglist *);
  194.  
  195. ExtFunc void plug_require_port(struct arglist *, const char *);
  196. ExtFunc struct arglist * plug_get_required_ports(struct arglist *);
  197.  
  198. ExtFunc void plug_require_udp_port(struct arglist*, const char *);
  199. ExtFunc struct arglist * plug_get_required_udp_ports(struct arglist *);
  200.  
  201. ExtFunc int plug_get_port_transport(struct arglist*, int);
  202. ExtFunc int comm_send_status(struct arglist*, char*, char*, int, int);
  203. ExtFunc int islocalhost(struct in_addr *);
  204.  
  205.  
  206.  
  207. /*
  208.  * Reporting functions
  209.  */
  210.  
  211. /* Plugin-specific : */
  212. ExtFunc void proto_post_hole(struct arglist *, int, const char *, const char *);
  213. ExtFunc void post_hole(struct arglist *, int, const char *);
  214. ExtFunc void post_hole_udp(struct arglist *, int, const char *);
  215. #define post_hole_tcp post_hole
  216.  
  217. ExtFunc void proto_post_info(struct arglist *, int, const char *, const char *);
  218. ExtFunc void post_info(struct arglist *, int, const char *);
  219. ExtFunc void post_info_udp(struct arglist *, int, const char *);
  220. #define post_info_tcp post_info
  221.  
  222. ExtFunc void proto_post_note(struct arglist *, int, const char *, const char *);
  223. ExtFunc void post_note(struct arglist *, int, const char *);
  224. ExtFunc void post_note_udp(struct arglist *, int, const char *);
  225. #define post_note_tcp post_note
  226.  
  227. #ifndef _WIN32
  228. /* returns a full duplex data file stream */
  229. ExtFunc FILE * ptyexecvp (const char *file, const char **argv, pid_t *child);
  230. #endif /* _WIN32 */
  231. ExtFunc char ** append_argv (char **argv, char *opt);
  232. ExtFunc void    destroy_argv (char **argv);
  233. ExtFunc void (*pty_logger(void(*)(const char *, ...)))(const char *, ...);
  234.  
  235. ExtFunc FILE*    nessus_popen(const char*, char *const[], pid_t*);
  236. ExtFunc FILE*    nessus_popen4(const char*, char *const[], pid_t*, int);
  237. ExtFunc int    nessus_pclose(FILE*, pid_t);
  238.  
  239. /* 
  240.  * Management of the portlists
  241.  */
  242.  
  243.  
  244. ExtFunc void host_add_port(struct arglist *, int, int);
  245. ExtFunc void host_add_port_udp(struct arglist *, int, int);
  246. ExtFunc int host_get_port_state(struct arglist *, int);
  247. ExtFunc int host_get_port_state_udp(struct arglist *, int);
  248. /* Not implemented
  249. char * host_get_port_banner(struct arglist *, int);
  250. */
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257. /*
  258.  * Miscellaneous functions
  259.  */
  260.  
  261. ExtFunc struct in_addr * plug_get_host_ip(struct arglist *);
  262. ExtFunc char * plug_get_host_name(struct arglist *);
  263. ExtFunc char * get_preference(struct arglist *, const char *);
  264. #define PREF_CHECKBOX "checkbox"
  265. #define PREF_ENTRY "entry"
  266. #define PREF_RADIO "radio"
  267. #define PREF_PASSWORD "password"
  268. #define PREF_FILE "file"
  269. ExtFunc void add_plugin_preference(struct arglist *, const char *, const char *, const char *);
  270. ExtFunc char *get_plugin_preference(struct arglist *, const char *);
  271. ExtFunc const char *get_plugin_preference_fname(struct arglist*, const char*);
  272.  
  273. /*
  274.  * Replacement for system related functions
  275.  */
  276.  
  277.  
  278.  
  279. ExtFunc void * emalloc(size_t);
  280. ExtFunc char * estrdup(const char *);
  281. ExtFunc void * erealloc(void*, size_t);
  282. ExtFunc void efree(void *);
  283. ExtFunc size_t estrlen(const char *, size_t);
  284.  
  285.  
  286. #ifdef HUNT_MEM_LEAKS
  287. ExtFunc void * __hml_malloc(char*, int, size_t);
  288. ExtFunc char * __hml_strdup(char*, int, char*);
  289. ExtFunc void   __hml_free(char*, int, void*);
  290. ExtFunc void * __hml_realloc(char*, int, void*, size_t);
  291.  
  292.  
  293.  
  294. #define emalloc(x) __hml_malloc(__FILE__, __LINE__, x)
  295. #define estrdup(x) __hml_strdup(__FILE__, __LINE__, x)
  296. #define efree(x)   __hml_free(__FILE__, __LINE__, x)
  297.  
  298. #undef strdup
  299.  
  300. #define malloc(x) __hml_malloc(__FILE__, __LINE__, x)
  301. #define strdup(x) __hml_strdup(__FILE__, __LINE__, x)
  302. #define free(x)   __hml_free(__FILE__, __LINE__, &x)
  303. #define realloc(x, y) __hml_realloc(__FILE__, __LINE__, x, y)
  304.  
  305. #endif
  306.  
  307. /* 
  308.  * Inter Plugins Communication functions
  309.  */
  310. ExtFunc struct kb_item ** plug_get_kb(struct arglist *);
  311. ExtFunc void plug_set_key(struct arglist *, char *, int, void *);
  312. ExtFunc void plug_replace_key(struct arglist *, char *, int, void *);
  313. ExtFunc void * plug_get_key(struct arglist *, char *, int *);
  314. ExtFunc void * plug_get_fresh_key(struct arglist *, char *, int *);
  315. /*
  316.  * FTP Functions
  317.  */
  318. ExtFunc int ftp_log_in(int , char * , char * );
  319. ExtFunc int ftp_get_pasv_address(int , struct sockaddr_in * );
  320.  
  321.  
  322. ExtFunc char* addslashes(char*);
  323. ExtFunc char* rmslashes(char*);
  324.  
  325. ExtFunc char* nessuslib_version();
  326.  
  327.  
  328.  
  329. /*
  330.  * Pcap utils
  331.  */
  332. #include <pcap.h>
  333.  
  334. ExtFunc int get_datalink_size(int);
  335. ExtFunc char *routethrough(struct in_addr *, struct in_addr *);
  336.  
  337. ExtFunc int is_local_ip(struct in_addr);
  338.  
  339. ExtFunc int get_mac_addr(struct in_addr, char**);
  340.  
  341. /* 
  342.  * Misc. defines
  343.  */
  344. /* Actions types of the plugins */
  345. #define ACT_LAST        ACT_END
  346. #define ACT_FIRST        ACT_INIT
  347.  
  348. #define ACT_END            10
  349. #define ACT_FLOOD        9
  350. #define ACT_KILL_HOST        8
  351. #define ACT_DENIAL         7
  352. #define ACT_DESTRUCTIVE_ATTACK     6
  353. #define ACT_MIXED_ATTACK     5
  354. #define ACT_ATTACK         4
  355. #define ACT_GATHER_INFO     3
  356. #define ACT_SETTINGS        2
  357. #define ACT_SCANNER         1
  358. #define ACT_INIT        0
  359.  
  360.  
  361.  
  362. #define    LAUNCH_DISABLED 0
  363. #define LAUNCH_RUN    1
  364. #define LAUNCH_SILENT    2
  365.  
  366.  
  367. /*
  368.  * Type of "transport layer", for encapsulated connections
  369.  * Only SSL is supported at this time.
  370.  * (Bad) examples of other layers could be SOCKS, httptunnel, icmptunnel,
  371.  * RMI over HTTP, DCOM over HTTP, TCP over TCP, etc.
  372.  */
  373. #define NESSUS_ENCAPS_IP    1
  374. #define NESSUS_ENCAPS_SSLv23    2 /* Ask for compatibility options */
  375. #define NESSUS_ENCAPS_SSLv2    3
  376. #define NESSUS_ENCAPS_SSLv3    4
  377. #define NESSUS_ENCAPS_TLSv1    5
  378.  
  379. #define IS_ENCAPS_SSL(x) ((x) >= NESSUS_ENCAPS_SSLv23 && (x) <= NESSUS_ENCAPS_TLSv1)
  380.  
  381. /*
  382.  * Transport layer options 
  383.  */
  384. #define NESSUS_CNX_IDS_EVASION_SPLIT    1L  /* Try to evade NIDS by spliting sends */
  385. #define NESSUS_CNX_IDS_EVASION_INJECT    2L /* Split + insert garbage */
  386. #define NESSUS_CNX_IDS_EVASION_SHORT_TTL 4L /* Split + too short ttl for garbage */
  387. #define NESSUS_CNX_IDS_EVASION_FAKE_RST  8L /* Send a fake RST from our end after each established connection */
  388.  
  389. #define NESSUS_CNX_IDS_EVASION_SEND_MASK (NESSUS_CNX_IDS_EVASION_SPLIT|NESSUS_CNX_IDS_EVASION_INJECT|NESSUS_CNX_IDS_EVASION_SHORT_TTL)
  390.  
  391.  
  392. ExtFunc int    open_stream_connection(struct arglist *, unsigned int, int, int);
  393. ExtFunc int    open_stream_connection_unknown_encaps(struct arglist *, unsigned int, int, int *);
  394. ExtFunc int    open_stream_connection_unknown_encaps5(struct arglist *, unsigned int, int, int *, int *);
  395. ExtFunc int    open_stream_auto_encaps(struct arglist *, unsigned int, int);
  396. ExtFunc int    write_stream_connection (int, void * buf, int n);
  397. ExtFunc int    read_stream_connection (int, void *, int);
  398. ExtFunc int    read_stream_connection_min(int, void*, int, int);
  399. ExtFunc int    close_stream_connection(int);
  400. ExtFunc int    nsend(int, void*, int, int);
  401. ExtFunc const char* get_encaps_name(int);
  402. ExtFunc const char* get_encaps_through(int);
  403.  
  404. ExtFunc int    stream_set_timeout(int, int);
  405. ExtFunc int    stream_set_options(int, int, int);
  406.  
  407. ExtFunc int    stream_set_buffer(int, int);
  408. ExtFunc int    stream_get_buffer_sz (int);
  409. ExtFunc int    stream_get_err(int);
  410.  
  411. #ifdef HAVE_SSL
  412. ExtFunc        X509*   stream_get_server_certificate(int);
  413. ExtFunc           char*   stream_get_ascii_server_certificate(int);
  414. #endif
  415.  
  416.  
  417. ExtFunc    int     is_shell_command_present(char*);
  418. ExtFunc char*     find_in_path(char*, int);
  419.  
  420. ExtFunc char*    build_encode_URL(struct arglist*, char*, char*, char*, char*);
  421.  
  422.  
  423. #ifdef HAVE_SSL
  424. ExtFunc int nessus_register_connection(int, SSL*);
  425. #else
  426. ExtFunc int nessus_register_connection(int, void*);
  427. #endif
  428. ExtFunc int nessus_deregister_connection(int);
  429. ExtFunc int nessus_get_socket_from_connection(int);
  430.  
  431.  
  432. ExtFunc void nessus_init_random();
  433. ExtFunc int stream_zero(fd_set*);
  434. ExtFunc int stream_set(int, fd_set*);
  435. ExtFunc int stream_isset(int, fd_set*);
  436.  
  437.  
  438. ExtFunc int bpf_server();
  439. ExtFunc int bpf_open_live(char*, char*);
  440. ExtFunc u_char* bpf_next(int, int *);
  441. ExtFunc void bpf_close(int);
  442. ExtFunc int  bpf_datalink(int);
  443.  
  444. void initsetproctitle(int argc, char *argv[], char *envp[]);
  445. #ifndef HAVE_SETPROCTITLE
  446. void setproctitle( const char *fmt, ... );
  447. #endif
  448.  
  449.  
  450.  
  451. ExtFunc struct in_addr socket_get_next_source_addr();
  452. ExtFunc int set_socket_source_addr(int, int);
  453. ExtFunc void socket_source_init(struct in_addr *);
  454.  
  455. struct arglist * store_plugin(struct arglist *,  char *);
  456. struct arglist * store_load_plugin(char *, char *,  struct arglist*);
  457. int         store_init_sys(char *);
  458. int         store_init_user(char *);
  459.  
  460.  
  461. int        nessus_init_svc();
  462. /*-----------------------------------------------------------------*/
  463.  
  464. #define KB_TYPE_INT ARG_INT
  465. #define KB_TYPE_STR ARG_STRING
  466.  
  467. struct kb_item {
  468.     char * name;
  469.      char type;
  470.     union {
  471.         char * v_str;
  472.         int v_int;
  473.     } v;
  474.     struct kb_item * next;
  475. };
  476.  
  477.  
  478. struct kb_item ** kb_new();
  479.  
  480.  
  481. struct kb_item * kb_item_get_single(struct kb_item **, char *, int );
  482. char * kb_item_get_str(struct kb_item **, char *);
  483. int    kb_item_get_int(struct kb_item **, char *);
  484.  
  485. struct kb_item * kb_item_get_all(struct kb_item **, char *);
  486. struct kb_item * kb_item_get_pattern(struct kb_item **, char *);
  487. void   kb_item_get_all_free(struct kb_item *);
  488.  
  489.  
  490. int    kb_item_add_str(struct kb_item **, char *, char *);
  491. int    kb_item_set_str(struct kb_item **, char *, char *);
  492. int    kb_item_add_int(struct kb_item **, char *, int   );
  493. int    kb_item_set_int(struct kb_item **, char *, int   );
  494.  
  495. struct arglist * plug_get_oldstyle_kb(struct arglist * );
  496.  
  497.  
  498. #define NEW_KB_MGMT
  499.  
  500.  
  501.  
  502. /*-----------------------------------------------------------------*/
  503.  
  504. struct http_msg {
  505.     int type;        /* Who should read this message  */
  506.     pid_t owner;        /* Process who sent that message */
  507.     unsigned short port;
  508.     int total_len;
  509.     int transport;
  510.     int data_len;
  511.     char data[1];
  512.     };
  513.     
  514. int http_share_exists(struct arglist *);    
  515. struct http_msg * http_share_mkmsg(int, int, int, char*);
  516. void http_share_freemsg(struct http_msg*);
  517. struct http_msg * http_share_send_recv_msg(struct arglist *, struct http_msg *);
  518.     
  519.     
  520. pid_t http_share_init(struct arglist *);
  521. int http_share_close(struct arglist *, pid_t);
  522.  
  523.  
  524. int os_send(int, void*, int, int);
  525. int os_recv(int, void*, int, int);
  526.  
  527.  
  528. #define INTERNAL_COMM_MSG_TYPE_CTRL    (1 << 16)
  529. #define INTERNAL_COMM_MSG_TYPE_KB    (1 << 17)
  530. #define INTERNAL_COMM_MSG_TYPE_DATA    (1 << 18)
  531. #define INTERNAL_COMM_MSG_SHARED_SOCKET (1 << 19)
  532.  
  533.  
  534. #define INTERNAL_COMM_KB_REPLACE    1
  535. #define INTERNAL_COMM_KB_GET        2
  536. #define INTERNAL_COMM_KB_SENDING_INT    4
  537. #define INTERNAL_COMM_KB_SENDING_STR    8
  538. #define INTERNAL_COMM_KB_ERROR         16    
  539.  
  540.  
  541. #define INTERNAL_COMM_CTRL_FINISHED    1
  542. #define INTERNAL_COMM_CTRL_ACK          2
  543.  
  544.  
  545. #define INTERNAL_COMM_SHARED_SOCKET_REGISTER    1
  546. #define INTERNAL_COMM_SHARED_SOCKET_ACQUIRE    2
  547. #define INTERNAL_COMM_SHARED_SOCKET_RELEASE    4
  548. #define INTERNAL_COMM_SHARED_SOCKET_DESTROY    8
  549.  
  550. #define INTERNAL_COMM_SHARED_SOCKET_DORECVMSG    16
  551. #define INTERNAL_COMM_SHARED_SOCKET_BUSY     32
  552. #define INTERNAL_COMM_SHARED_SOCKET_ERROR    64
  553.  
  554.  
  555.  
  556. int internal_send(int, char *, int);
  557. int internal_recv(int, char **, int *, int *);
  558. int internal_finished(int);
  559.     
  560. int fd_is_stream(int);
  561. int stream_pending(int);
  562.  
  563. int send_fd(int, int);
  564. int recv_fd(int);
  565.  
  566. int shared_socket_register ( struct arglist *, int, char *);
  567. int shared_socket_acquire  ( struct arglist *, char * );
  568. int shared_socket_release  ( struct arglist *, char * );
  569. int shared_socket_destroy  ( struct arglist *, char * );
  570.  
  571. #endif
  572.  
  573.